Revisión del Programador PIPO2.

Por José Manuel García

 

 

Introducción.

Hace poco publiqué una revisión del programador PP2, para adaptarlo a nuevos dispositivos. Ahora le toca el turno al PIPO2. En este caso, no sólo conseguiremos adaptarlo a nuevos modelos de PICs, sino además, añadir algunos dispositivos útiles a la lista de los que puede programar. Teniendo en cuenta la simplicidad de este programador, no deja sorprender la cantidad de dispositivos que puede manejar.

Concretamente, una parte de las modificaciones están encaminadas a que pueda programar los PICs de 8 y 14 patillas con memoria Flash EPROM, unos micros realmente útiles por su tamaño y prestaciones. Por otro lado, gracias a otra parte de las modificaciones, se añaden a la lista las memorias I2C EEPROM de la serie 24C/24LC, cuya utilización está cada vez más extendida. Por último, otra pequeña modificación adapta el programador a cambios en la situación de las patillas utilizadas para la programación introducidos por Microchip para algunos modelos nuevos, como los PIC16F81x y PIC18F1x20.

En definitiva, con las modificaciones que ahora explicaré, la tabla de dispositivos programables con el PIPO2 queda como se refleja en la tabla 1. En todos los modelos de PICs, el programador funciona tanto con las distintas versiones de cada modelo (-P, -A, -B, -JW), incluidas las versiones de bajo consumo (16LF y 18LF) y es probable que funcione con otros modelos actuales o futuros no reflejados en la tabla 1. En cualquier caso, los dispositivos que aparecen en negrita los he probado personalmente. En la columna de la derecha se detalla la posición en que debe pincharse cada dispositivo en el zócalo del programador, según la figura 3.

Dispositivo:

Posición

PIC12F629, PIC12F675

8 P

PIC16F630, PIC16F676

14 P

PIC16C620, PIC16C621, PIC16C622, PIC16C710, PIC16C711, PIC16C712, PIC16C715, PIC16C716, PIC16F83, PIC16F84, PIC16F87, PIC16F88, PIC16F627, PIC16F628, PIC16F648, PIC16F818, PIC16F819, PIC18F1220, PIC18F1320

18 P

PIC16C62, PIC16C63, PIC16C66, PIC16C72, PIC16C73, PIC16C642, PIC16C76, PIC16C642, PIC16C745, PIC16C773, PIC18C242, PIC18C252, PIC16F72, PIC16F73, PIC16F76, PIC16F737, PIC16F767, PIC16F870, PIC16F872, PIC16F873, PIC16F876, PIC18F2220, PIC18F2320, PIC18F2331, PIC18F2431, PIC18F242, PIC16F248, PIC18F252, PIC18F258

28 P

PIC16C65, PIC16C67, PIC16C74, PIC16C77, PIC16C662, PIC16C765, PIC18C442, PIC18C452, PIC16F74, PIC16F77, PIC16F747, PIC16F777, PIC16F871, PIC16F874, PIC16F877, PIC18F442, PIC18F448, PIC18F452, PIC18F458, PIC18F4220, PIC18F4320, PIC18F4331, PIC18F4431

40 P

24C01, 24C02, 24C04, 24C08, 24C16, 24C32, 24C64, 24C128, 24C256, 24C512, 24LC01, 24LC02, 24LC04, 24LC08, 24LC16, 24LC32, 24LC64, 24LC128, 24LC256, 24LC512

24C

Tabla 1

 

Modificaciones.

Las modificaciones de las que hemos hablado, se concretan en cablear unas cuantas patillas de los zócalos, que antes estaban sin conectar. De esta forma, el esquema queda como se indica en la figura 1. Como puede verse, la parte electrónica no varía para nada, y sólo se han añadido conexiones en los zócalos.

Ampliar

Figura 1



Llevar a cabo las modificaciones es relativamente fácil, ya que sólo se trata de soldar algunos cablecitos, como se indica en la figura 2 (vista desde la cara de soldadura). Los colores utilizados no tienen significado alguno, y sirven sólo para diferenciar unos cables de otros.

Ampliar

Figura 2



Una vez realizadas las modificaciones, las posiciones para pinchar los distintos tipos de dispositivos en los zócalos, son las indicadas en la figura 3. Es muy importante poner atención a la hora de insertar un dispositivo, pues si se pone donde no es, puede sufrir daños irreparables. Especial atención requieren los PICs de 8 y 14 patillas, que se insertan en la postura contraria a la del resto de dispositivos.

Ampliar

Figura 3



Por último, me gustaría añadir unas consideraciones que se deben tener muy en cuenta con este programador. Como ya se explicaba en la presentación del PIPO2, este programador no utiliza una fuente de alimentación externa, sino que extrae la energía para funcionar, del propio puerto serie. Esto simplifica el diseño y hace más cómodo su uso, pero impone ciertas limitaciones. Por un lado, si el puerto serie del ordenador utilizado proporciona señales de tensión o potencia demasiado bajas, el programador no funcionará. Esto no suele ocurrir en ordenadores de sobremesa, pero es habitual en ordenadores portátiles, por lo que no es un programador adecuado para este tipo de ordenadores.

Pero actualmente existe un segundo problema con este tipo de programadores debido a lo limitado de la corriente que puede proporcionar en sus señales, que afecta a algunos de los modelos más recientes de PICs. En su empeño por añadir prestaciones y a la vez reducir el tamaño de sus micros, Microchip añade cada vez más funciones a cada patilla de sus micros, a la vez que incluye en muchos de ellos la posibilidad de utilizar un oscilador interno que no requiere ningún componente externo para funcionar. Veremos que estas dos características unidas, pueden hacer que un PIC sólo pueda programarse una vez con el PIPO2.

Si programamos un PIC para que utilice dicho oscilador interno, comenzará a funcionar y a ejecutar instrucciones, nada más alimentarlo. En principio, esto no sería ningún problema. Cuando el programador pusiera los niveles adecuados en las patillas utilizadas para programar el PIC, éste dejaría de ejecutar instrucciones y entraría en modo programación. Pero, si antes de que esto ocurra, el programa que se está ejecutando configura esas patillas del PIC como salidas, tendremos un problema. Un puerto de PIC, configurado como salida, puede entregar o drenar hasta 25mA, una corriente mucho mayor que la que puede entregar o drenar nuestro programador, por las limitaciones de su fuente de alimentación. Por tanto, si por ejemplo, el PIC pone una patilla de salida a 0V y el programador trata de ponerla a +5V, tendremos el equivalente a un cortocircuito, y la fuente de alimentación del programador se vendrá abajo, dejando al PIC sin alimentación. El resultado es que no se completará la programación. Es un tipo de problema que puede desorientar bastante, porque el PIC se dejará programar la primera vez, pero no las siguientes, aparentando que se ha estropeado.

Es difícil conseguir una solución a este problema mediante una modificación del hardware. Lo ideal sería activar la alimentación del PIC justo cuando va a comenzar la programación, como hacen otros programadores (como el PP2, en el que no existe este problema), pero al no ser esta una característica del JDM o Ludipipo original (en el que está basado el PIPO2), el software de grabación estándar no la contempla. Yo he probado a modificar el circuito para que la alimentación sólo se active cuando se activa la tensión de programación, pero sólo palia el problema parcialmente, y no es fiable.

La única solución realmente eficaz (aparte de utilizar un programador más avanzado) es tomar ciertas precauciones al escribir el programa que vamos a grabar en el micro. Lo ideal sería no utilizar como salidas los puertos que comparten las mismas patillas utilizadas para la programación del PIC. Cuando esto no sea posible porque se necesite usar esas patillas, otra solución es retardar la configuración de esos puertos como salidas después de un reset. Estableciendo un retardo de uno o dos segundos, y con un poco de habilidad, se puede tener el PIC ya pinchado en el zócalo, dar la orden de programar a ICProg, y dejarlo esperando a que le demos la confirmación. Entonces, conectamos el PIPO2 al puerto serie, y antes de que pase ese tiempo, le confirmamos a ICProg que programe el dispositivo. Es un poco chapucero pero tampoco se pueden pedir milagros a un programador como este...